/**
 * @author baz
 */
package cat.state {
import bot.BotView;

import cat.*;

import flash.ui.Keyboard;

import lib.KeyboardManager;

public class CatStateHijack implements ICatState {
    private var view:CatView;
    private var botModel:BotView;

    /**
     * Переменная для расчета sin(...) для тряски кота по Y
     */
    private var wavingAxisX:Number;

    public function CatStateHijack(catModel:CatView) {
        view = catModel;
    }

    public function init(...params):void {
        botModel = params[0];

        // Positioning
        view.x = botModel.x;
        view.y = botModel.y;
    }

    public function frameHandler():void {
        KeyboardManager.$.isDown(Keyboard.LEFT) && view.moveLeft();
        KeyboardManager.$.isDown(Keyboard.RIGHT) && view.moveRight();
        KeyboardManager.$.isDown(Keyboard.UP) && view.moveUp();
        KeyboardManager.$.isDown(Keyboard.DOWN) && view.moveDown();
        KeyboardManager.$.isDown(Keyboard.SPACE) && view.jump();

        // Тряска корабля по X и Y когда кот схватил инопланетянина
        var distortionX:Number = Math.random() * 14 - 7;
        var distortionY:Number = Math.random() * 14 - 7;
        view.x += distortionX;
        view.y += distortionY;

        // Синусоидальная тряска корабля по Y когда кот схватил инопланетянина
        var wavingSinusoidY:int = Math.sin(wavingAxisX) * 14;
        view.y += wavingSinusoidY;
        wavingAxisX += 2;

        // Move cat and bot together
        botModel.x = view.x;
        botModel.y = view.y;
    }

    public function cleanUp():void {
        botModel = null;
    }
}
}
